//////////////////////////////////////////////////////////////////////////
#pragma once
#pragma managed
//////////////////////////////////////////////////////////////////////////
using namespace System;
using namespace System::Runtime::InteropServices;
//////////////////////////////////////////////////////////////////////////
NAMESPACE_BEGIN
//////////////////////////////////////////////////////////////////////////
public enum class WindowMode
{
	/// <summary>
	/// CV_WINDOW_AUTOSIZE
	/// </summary>
	Autosize = CV_WINDOW_AUTOSIZE,
};

public enum class WindowEventId
{
	/// <summary>
	/// CV_EVENT_MOUSEMOVE
	/// </summary>
	MouseMove = CV_EVENT_MOUSEMOVE,
	/// <summary>
	/// CV_EVENT_LBUTTONDOWN
	/// </summary>
	LButtonDown = CV_EVENT_LBUTTONDOWN,
	/// <summary>
	/// CV_EVENT_RBUTTONDOWN
	/// </summary>
	RButtonDown = CV_EVENT_RBUTTONDOWN,
	/// <summary>
	/// CV_EVENT_MBUTTONDOWN
	/// </summary>
	MButtonDown = CV_EVENT_MBUTTONDOWN,
	/// <summary>
	/// CV_EVENT_LBUTTONUP
	/// </summary>
	LButtonUp = CV_EVENT_LBUTTONUP,
	/// <summary>
	/// CV_EVENT_RBUTTONUP
	/// </summary>
	RButtonUp = CV_EVENT_RBUTTONUP,
	/// <summary>
	/// CV_EVENT_MBUTTONUP
	/// </summary>
	MButtonUp = CV_EVENT_MBUTTONUP,
	/// <summary>
	/// CV_EVENT_LBUTTONDBLCLK
	/// </summary>
	LButtonDBLClk = CV_EVENT_LBUTTONDBLCLK,
	/// <summary>
	/// CV_EVENT_RBUTTONDBLCLK
	/// </summary>
	RButtonDBLClk = CV_EVENT_RBUTTONDBLCLK,
	/// <summary>
	/// CV_EVENT_MBUTTONDBLCLK
	/// </summary>
	MButtonDBLClk = CV_EVENT_MBUTTONDBLCLK,
};

[FlagsAttribute]
public enum class WindowEventFlag
{
	None = 0,
	/// <summary>
	/// CV_EVENT_FLAG_LBUTTON
	/// </summary>
	FlagLButton = CV_EVENT_FLAG_LBUTTON,
	/// <summary>
	/// CV_EVENT_FLAG_RBUTTON
	/// </summary>
	FlagRButton = CV_EVENT_FLAG_RBUTTON,
	/// <summary>
	/// CV_EVENT_FLAG_MBUTTON
	/// </summary>
	FlagMButton = CV_EVENT_FLAG_MBUTTON,
	/// <summary>
	/// CV_EVENT_FLAG_CTRLKEY
	/// </summary>
	FlagCtrlKey = CV_EVENT_FLAG_CTRLKEY,
	/// <summary>
	/// CV_EVENT_FLAG_SHIFTKEY
	/// </summary>
	FlagShifTKey = CV_EVENT_FLAG_SHIFTKEY,
	/// <summary>
	/// CV_EVENT_FLAG_ALTKEY
	/// </summary>
	FlagAltKey = CV_EVENT_FLAG_ALTKEY,
};

[FlagsAttribute]
public enum class LoadImageFlag
{
	/// <summary>
	/// 8bit, color or not
	/// CV_LOAD_IMAGE_UNCHANGED
	/// </summary>
	Unchanged = CV_LOAD_IMAGE_UNCHANGED,
	/// <summary>
	/// 8bit, gray
	/// CV_LOAD_IMAGE_GRAYSCALE
	/// </summary>
	Grayscale = CV_LOAD_IMAGE_GRAYSCALE,
	/// <summary>
	/// color
	/// CV_LOAD_IMAGE_COLOR
	/// </summary>
	Color = CV_LOAD_IMAGE_COLOR,
	/// <summary>
	/// any depth
	/// CV_LOAD_IMAGE_ANYDEPTH
	/// </summary>
	AnyDepth = CV_LOAD_IMAGE_ANYDEPTH,
	/// <summary>
	/// any color
	/// CV_LOAD_IMAGE_ANYCOLOR
	/// </summary>
	AnyColor = CV_LOAD_IMAGE_ANYCOLOR,
};

[FlagsAttribute]
public enum class WriteImageFlag
{
	/// <summary>
	/// CV_IMWRITE_JPEG_QUALITY
	/// </summary>
	JpegQuality = CV_IMWRITE_JPEG_QUALITY,
	/// <summary>
	/// CV_IMWRITE_PNG_COMPRESSION
	/// </summary>
	PngCompression = CV_IMWRITE_PNG_COMPRESSION,
	/// <summary>
	/// CV_IMWRITE_PXM_BINARY
	/// </summary>
	PxmBinary = CV_IMWRITE_PXM_BINARY,
};

[FlagsAttribute]
public enum class ConvertImageFlag
{
	/// <summary>
	/// CV_CVTIMG_FLIP
	/// </summary>
	Flip = CV_CVTIMG_FLIP,
	/// <summary>
	/// CV_CVTIMG_SWAP_RB
	/// </summary>
	SwapRB = CV_CVTIMG_SWAP_RB,
};

[FlagsAttribute]
public enum class CaptureDeviceFlag
{
	/// <summary>
	/// autodetect
	/// CV_CAP_ANY
	/// </summary>
	Any = CV_CAP_ANY,
	/// <summary>
	/// MIL proprietary drivers
	/// CV_CAP_MIL
	/// </summary>
	Mil = CV_CAP_MIL,
	/// <summary>
	/// platform native
	/// CV_CAP_VFW
	/// </summary>
	Vfw = CV_CAP_VFW,
	/// <summary>
	/// CV_CAP_V4L
	/// </summary>
	V4l = CV_CAP_V4L,
	/// <summary>
	/// CV_CAP_V4L2
	/// </summary>
	V4l2 = CV_CAP_V4L2,
	/// <summary>
	/// IEEE 1394 drivers
	/// CV_CAP_FIREWARE
	/// </summary>
	Fireware = CV_CAP_FIREWARE,
	/// <summary>
	/// CV_CAP_FIREWIRE
	/// </summary>
	Firewire = CV_CAP_FIREWIRE,
	/// <summary>
	/// CV_CAP_IEEE1394
	/// </summary>
	IEEE1394 = CV_CAP_IEEE1394,
	/// <summary>
	/// CV_CAP_DC1394
	/// </summary>
	DC1394 = CV_CAP_DC1394,
	/// <summary>
	/// CV_CAP_CMU1394
	/// </summary>
	CMU1394 = CV_CAP_CMU1394,
	/// <summary>
	/// TYZX proprietary drivers
	/// CV_CAP_STEREO
	/// </summary>
	Stereo = CV_CAP_STEREO,
	/// <summary>
	/// CV_CAP_TYZX
	/// </summary>
	Tyzx = CV_CAP_TYZX,
	/// <summary>
	/// CV_CAP_TYZX_LEFT
	/// </summary>
	TyzxLeft = CV_TYZX_LEFT,
	/// <summary>
	/// CV_CAP_TYZX_RIGHT
	/// </summary>
	TyzxRight = CV_TYZX_RIGHT,
	/// <summary>
	/// CV_CAP_TYZX_COLOR
	/// </summary>
	TyzxColor = CV_TYZX_COLOR,
	/// <summary>
	/// CV_CAP_TYZX_Z
	/// </summary>
	TyzxZ = CV_TYZX_Z,
	/// <summary>
	/// QuickTime
	/// CV_CAP_QT
	/// </summary>
	Qt = CV_CAP_QT,
	/// <summary>
	/// Unicap drivers
	/// CV_CAP_UNICAP
	/// </summary>
	Unicap = CV_CAP_UNICAP,
	/// <summary>
	/// DirectShow (via videoInput)
	/// CV_CAP_DSHOW
	/// </summary>
	DShow = CV_CAP_DSHOW,
};

public enum class CapturePropType
{
	/// <summary>
	/// CV_CAP_PROP_POS_MSEC
	/// </summary>
	PosMsec = CV_CAP_PROP_POS_MSEC,
	/// <summary>
	/// CV_CAP_PROP_POS_FRAMES
	/// </summary>
	PosFrames = CV_CAP_PROP_POS_FRAMES,
	/// <summary>
	/// CV_CAP_PROP_POS_AVI_RATIO
	/// </summary>
	PosAviRatio = CV_CAP_PROP_POS_AVI_RATIO,
	/// <summary>
	/// CV_CAP_PROP_FRAME_WIDTH
	/// </summary>
	FrameWidth = CV_CAP_PROP_FRAME_WIDTH,
	/// <summary>
	/// CV_CAP_PROP_FRAME_HEIGHT
	/// </summary>
	FrameHeight = CV_CAP_PROP_FRAME_HEIGHT,
	/// <summary>
	/// CV_CAP_PROP_FPS
	/// </summary>
	Fps = CV_CAP_PROP_FPS,
	/// <summary>
	/// CV_CAP_PROP_FOURCC
	/// </summary>
	Fourcc = CV_CAP_PROP_FOURCC,
	/// <summary>
	/// CV_CAP_PROP_FRAME_COUNT
	/// </summary>
	Frame_count = CV_CAP_PROP_FRAME_COUNT,
	/// <summary>
	/// CV_CAP_PROP_FORMAT
	/// </summary>
	Format = CV_CAP_PROP_FORMAT,
	/// <summary>
	/// CV_CAP_PROP_MODE
	/// </summary>
	Mode = CV_CAP_PROP_MODE,
	/// <summary>
	/// CV_CAP_PROP_BRIGHTNESS
	/// </summary>
	Brightness = CV_CAP_PROP_BRIGHTNESS,
	/// <summary>
	/// CV_CAP_PROP_CONTRAST
	/// </summary>
	Contrast = CV_CAP_PROP_CONTRAST,
	/// <summary>
	/// CV_CAP_PROP_SATURATION
	/// </summary>
	Saturation = CV_CAP_PROP_SATURATION,
	/// <summary>
	/// CV_CAP_PROP_HUE
	/// </summary>
	Hue = CV_CAP_PROP_HUE,
	/// <summary>
	/// CV_CAP_PROP_GAIN
	/// </summary>
	Gain = CV_CAP_PROP_GAIN,
	/// <summary>
	/// CV_CAP_PROP_EXPOSURE
	/// </summary>
	Exposure = CV_CAP_PROP_EXPOSURE,
	/// <summary>
	/// CV_CAP_PROP_CONVERT_RGB
	/// </summary>
	ConvertRgb = CV_CAP_PROP_CONVERT_RGB,
	/// <summary>
	/// CV_CAP_PROP_WHITE_BALANCE
	/// </summary>
	WhiteBalance = CV_CAP_PROP_WHITE_BALANCE,
	/// <summary>
	/// CV_CAP_PROP_RECTIFICATION
	/// </summary>
	Rectification = CV_CAP_PROP_RECTIFICATION,
};

//////////////////////////////////////////////////////////////////////////
NAMESPACE_END
//////////////////////////////////////////////////////////////////////////